"""
参数配置文件
"""
import datetime
import os
import random


# 设置延迟时间：1-10秒之间的随机数
DELAY = random.randint(1, 10)

# 向下翻页次数
PAGE_DOWN_TIMES = 6

# 检索式，支持中国知网的专业检索，建议先在专业检索中找到文献，再复制检索式至SEARCH_QUERIES
# 检索式支持并发，可以同时抓取多个检索式。每一个检索式都会生成一个JSON文件，文件名称为检索式中的标题
SEARCH_QUERIES = [
    # "SU=AIGC + 生成式AI + 生成式人工智能 + ChatGPT + 大语言模型 + 人工智能生成内容 + 大模型",
    # "TI='数字基础设施建设与增值税横向分配——基于数字生产和消费的双重视角'",
    # "LY='图书情报知识'",
    # "LY='中国图书馆学报'",
    # "LY='信息资源管理学报'",
    # "LY='国家图书馆学刊'",
    # "LY='图书情报工作'",
    # "LY='图书馆'",
    # "LY='情报杂志'",
    # "LY='情报理论与实践'",
    # "LY='情报科学'",
    # "LY='情报资料工作'",
    # "LY='数据分析与知识发现'",
    # "LY='档案学研究'",
    # "LY='档案学通讯'",
    # "LY='现代情报'",
    # "LY='图书与情报'",
    "LY='情报学报'",
    "LY='图书情报知识'",
    "LY='图书馆学研究'",
    "LY='图书馆建设'",
    "LY='图书馆论坛'",
    "LY='图书馆杂志'",
]

# 定义CNKI中各类型参考文献的CSS选择器。
# 通过注释(#)可以禁用对应类型参考文献的抓取。
TYPES = {
    "学术期刊": "#nxgp-kcms-data-ref-references-journal",
    "外文期刊": "#nxgp-kcms-data-ref-references-journal-w",
    "图书": "#nxgp-kcms-data-ref-references-book",
    "报纸": "#nxgp-kcms-data-ref-references-newpaper",
    "硕士": "#nxgp-kcms-data-ref-references-dissertation-m",
    "博士": "#nxgp-kcms-data-ref-references-dissertation-d",
    "中外文题录": "#nxgp-kcms-data-ref-references-crldeng",
    "会议": "#nxgp-kcms-data-ref-references-conference-c",
    "国外会议": "#nxgp-kcms-data-ref-references-conference-i",
    "年鉴": "#nxgp-kcms-data-ref-references-yearbook",
    "专利": "#nxgp-kcms-data-ref-references-patent",
    "标准": "#nxgp-kcms-data-ref-references-stand"
}

# 浏览器驱动路径配置
# 默认使用Edge浏览器驱动
# 支持更换为Chrome、Firefox等其他浏览器驱动
# 注意：请确保浏览器驱动路径正确，否则程序将无法正常运行
WEB_DRIVER_PATH = r'S:\PythonProject\cnki-references-scrapy\web_driver\msedgedriver.exe'


# 获取当前日期作为时间戳(格式:YYYYMMDD),用于标记抓取的数据文件
CURRENT_DATE = datetime.datetime.now().strftime("%Y%m%d")

# CNKI 的 URL 路径
START_URL = 'https://kns.cnki.net/kns8s/AdvSearch'

# 当无法解析参考文献时使用的默认引用格式
# 格式：作者, 年份, 标题
# 用于CiteSpace格式合并时使用
DEFAULT_REFERENCE = "Anonymous, 1900, Unknown"

# 如果你想搜索高质量的期刊。
# 支持的选项有："HX"、"CSI"、"SI", "EI", "CSD"
# 注意："HX"、"CSI"、"SI", "EI", "CSD" 是CNKI中期刊的分类，需要根据实际情况选择
CHECKBOX = ["HX", "CSI"]

# 基本选择器配置
# 用于CNKI专业检索页面的元素定位
JOURNAL_SEARCH_SELECTOR = "a[classid='YSTT4HG0']"
MAJOR_SEARCH_SELECTOR = "li[name='majorSearch']"
TEXT_AREA_SELECTOR = "textarea[autocomplete='off']"
START_SEARCH_BUTTON_SELECTOR = "input[type='button'][class='btn-search']"
TOTAL_ARTICLE_NUMBER_SELECTOR = "[class='pagerTitleCell'] > em"
RESULT_TABLE_LIST_SELECTOR = "[class='fz14']"
PAGE_NEXT_SELECTOR = "#PageNext"
REFERENCE_TOTAL_NUMBER_SELECTOR = "#rc1"
REFERENCE_LIST_SELECTOR = "ul[class='ebBd']"
REFERENCE_NEXT_BUTTON_SELECTOR = "a[class='next']"
CITATION_FLAG_SELECTOR = "#refpartdiv > h5 > span > b"
JOURNAL_QUALITY_SELECTOR = "input[type='checkbox']"
START_YEAR_SELECTOR = "input[placeholder='起始年']"
END_YEAR_SELECTOR = "input[placeholder='结束年']"
ARTICLE_LIST = "a[class='icon-arrow']"
TITLE_SELECTOR = "div[class='wx-tit'] > h1"


# 设置文献检索的时间范围（年份）
# 例如:START_YEAR="2020", END_YEAR="2024"表示检索2020-2024年的文献
START_YEAR = "2019"
END_YEAR = "2024"


# 配置CNKI中的文献分类（可选）
ARTICLE_LIST_INFORMATION_TEC = "#I"
# 类别示例：图书情报与数字图书馆
ARTICLE_CATALOG_LIS = "#CNKI168 > li:nth-child(9) > ul > li:nth-child(9) > div > i.icon-select"
# 类别示例：档案及博物馆
ARTICLE_CATALOG_ARCHIVE = "#CNKI168 > li:nth-child(9) > ul > li:nth-child(10) > div > i.icon-select"

# 获取环境变量中大模型的 API
# 默认使用DeepSeek家的
API_KEY = os.getenv("OPENAI_API_KEY")

TIME_AND_CITED_PATH = r"S:\PythonProject\cnki-references-scrapy\main\date_and_cited"

CRAWL_BASE = r"S:\PythonProject\cnki-references-scrapy\main\crawl_base"
CNKI_BASE = r"S:\PythonProject\cnki-references-scrapy\main\scrapy_results"
OUTPUT_BASE = r"S:\PythonProject\cnki-references-scrapy\main\merged_results"
